import { deletes, get, getBaseURL, post } from './request'
const HttpManager = {
    // 获取图片信息   后台数据包含/所以此处直接使用${url}而不是/${url}
    attachImageUrl: (url) => `${getBaseURL()}${url}`,
    // ===========> 轮播图 API
    // 获取轮播图数据
    getBannerList: () => get(`banner/getAllBanner`),

    // =======================> 歌单 API 完成
    // 获取全部歌单
    getSongList: () => get("songList"),
    // 获取歌单类型
    getSongListOfStyle: (style) => get(`songList/style/detail?style=${style}`),
    // 返回标题包含文字的歌单
    getSongListOfLikeTitle: (keywords) => get(`songList/likeTitle/detail?title=${keywords}`),
    // 返回歌单里指定歌单ID的歌曲
    getListSongOfSongId: (songListId) => get(`song/songList/${songListId}`),

    // ====================> 歌手 API 
    // 获取全部歌手
    getAllSinger: () => get(`singers`),

    // =====================> 歌曲 API 
    // 返回歌名中包含关键字的歌曲
    getSongOfSongName: (keywords) => get(`song/songName/detail?name=${keywords}`),

    // =====================> 用户 API
    /**
     * 用户登录
     * @param {Object} params - 登录参数
     * @param {string} params.username - 用户名
     * @param {string} params.password - 密码
     * @returns {Promise} 返回登录结果的Promise
     */
    signIn: ({ username, password }) => post(`/user/login/status`, { username, password }),
    /**
     * 用户注册
     * @param {Object} params - 注册参数
     * @param {string} params.username - 用户名
     * @param {string} params.password - 密码
     * @param {number} params.sex - 性别
     * @param {string} params.phoneNum - 手机号
     * @param {string} params.email - 邮箱
     * @param {string} params.birth - 出生日期
     * @param {string} params.introduction - 个人介绍
     * @param {string} params.location - 所在地
     * @returns {Promise} 返回注册结果的Promise
     */
    SignUp: ({ username, password, gender, phoneNum, email, birth, introduction, location }) =>
        post(`user/add`, { username, password, gender, phoneNum, email, birth, introduction, location }),
    /**
     * 获取用户详情
     * @param {number} id - 用户ID
     * @returns {Promise} 返回用户详情数据的Promise
     */
    getUserOfId: (id) => get(`user/detail?id=${id}`),
    /**
     * 获取用户收藏列表
     * @param {number} userId - 用户ID
     * @returns {Promise} 返回用户收藏列表数据的Promise
     */
    getCollectionOfUser: (userId) => get(`collection/detail?userId=${userId}`),

    updateUserMsg: ({ id, username, gender, phoneNum, email, birth, introduction, location }) =>
        post(`user/update`, { id, username, gender, phoneNum, email, birth, introduction, location }),

    deleteUser: (id) => get(`user/delete?id=${id}`),

    /**
     * 获取用户头像上传URL
     * @param {number} userId - 用户ID
     * @returns {string} 返回头像上传接口URL
     */
    uploadUrl: (userId) => `${getBaseURL()}/user/avatar/update?id=${userId}`,
    /**
     * 更新用户密码
     * @param {Object} params - 密码更新参数
     * @param {number} params.id - 用户ID
     * @param {string} params.username - 用户名
     * @param {string} params.oldPassword - 原密码
     * @param {string} params.password - 新密码
     * @returns {Promise} 返回密码更新结果的Promise
     */
    updateUserPassword: ({ id, username, oldPassword, password }) =>
        post(`user/updatePassword`, { id, username, oldPassword, password }),

    // ================> 评分 API
    // 提交评分
    setRank: ({ songListId, consumerId, score }) => post(`rankList/add`, { songListId, consumerId, score }),
    // 获取指定歌单的评分
    getRankOfSongListId: (songListId) => get(`rankList?songListId=${songListId}`),
    // 获取指定用户的歌单评分
    getUserRank: (consumerId, songListId) => get(`rankList/user?consumerId=${consumerId}&songListId=${songListId}`),
    // ================> 评论 API
    // 添加评论
    setComment: ({userId,content,songId,songListId,nowType}) => post(`comment/add`, {userId,content,songId,songListId,nowType}),
    // 返回所有评论
    getAllComment: (type, id) => {
        let url = "";
        if (type === 1) {
        url = `comment/songList/${id}`;
        } else if (type === 0) {
        url = `comment/song/${id}`;
        }
        return get(url);
    },
    // 点赞
    toSupport: ({commentId, userId}) => post(`userSupport/like`, {commentId, userId}),
    deleteComment: (id) => deletes(`comment/${id}`),
}

export { HttpManager }